# 客户端：
import socket, time
cli = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
cli.connect(('localhost', 9000))

while 1:
    #     1.发送指令 下载文件     get filename
    cmd = input('input>>>').strip()
    if not cmd:
        continue
    if cmd == 'q':
        break
    cli.send(cmd.encode())
#     2.接收服务器端传送的固定消息头   解析
    raw_mag_head = cli.recv(32).decode()
    #     3.拿到文件大小
    file_size = int(raw_mag_head.split('|')[1])
#     4.本地创建一个新文件 ， 文件名+dowlond
    file_name = cmd.split()[1]
    f = open(f'{file_name}.download', 'wb')
#     5. 循环接收数据
    new_size = 0
    new_p = 0
    while new_size < file_size:
        d = cli.recv(1024)
        new_size += len(d)
        f.write(d)
        #print(file_size, new_size)
        #                      加上代码式的进度条
        now_p = int((new_size / file_size) *100)
        if now_p > new_p:
            print(f'\r[{now_p}%{now_p* ">" }]', end='', flush=True)
            time.sleep(0.5)
            new_p = now_p


    f.close()
    print(f'\n{file_name} done size:{file_size}')









